
var table = {
	options:{}
};
(function ($) {
    $.extend({
        modal:{
            //遮罩
            loading:function (msg) {
                $.blockUI({ message: '<div class="loadingcss"><div class="loading-activity-style"></div> ' + msg + '</div>' });
            },
            close_Loading:function() {
                $.unblockUI();
            },
            //弹出窗口
            open:function(title, url, width, height, fun){
            	if($.common.isBlank(height)){
            		height = ($(window).height() - 20);
            	}
            	if($.common.isBlank(width)){
            		width = 800;
            	}
            	layer.open({
                    type: 2,
					title:title,
                    content: url,
                    area: [width+'px', height+'px'],
                    btn: ['确认', '关闭'],
                    anim: 5,
                    yes: fun,
                    btn2: function(index, layero){
	                    //按钮【按钮二】的回调
	                    layer.close(index);
                    }
                });
            },
			openAdd:function(){
				$.modal.open(MSG.ADD+"-"+table.options.title, table.options.addUrl,null,null,function (index, layero) {
					//添加
					var body = layer.getChildFrame('body', index);
					$.post(table.options.addUrl + "/save",body.find("#add_form").serializeObject(),function (data) {
						if(data.code == MSG.CODE.SUCCESS){
							layer.alert(MSG.RESULT_SUCCESS,{icon: 6}, function(ind){
								//刷新表格
								$("#" + table.options.id).bootstrapTable('refresh', {
									silent: true
								});
								layer.close(ind);
								layer.close(index);
							});
						} else {
							layer.msg(data.msg,{icon: 5});
						}
					})
				});
			},
			/*修改*/
			openEdit:function(){
				var row = $("#" + table.options.id).bootstrapTable('getSelections')[0];
				if ($.common.isBlank(row)) {
					layer.msg(MSG.ONE_SELECTED,{icon: 7});
					return;
				}
				$.modal.open(MSG.EDIT+"-"+table.options.title, table.options.editUrl+"/"+row.id,null,null,function (index, layero) {
					//修改
					var body = layer.getChildFrame('body', index);
					$.post(table.options.editUrl + "/save",body.find("#edit_form").serializeObject(),function (data) {
						if(data.code == MSG.CODE.SUCCESS){
							layer.alert(MSG.RESULT_SUCCESS,{icon: 6}, function(ind){
								//刷新表格
								$("#" + table.options.id).bootstrapTable('refresh', {
									silent: true
								});
								layer.close(ind);
								layer.close(index);
							});
						} else {
							layer.msg(data.msg,{icon: 5});
						}
					})
				});
			},
			remove:function(){
				var row = $("#" + table.options.id).bootstrapTable('getSelections')[0];
				if ($.common.isBlank(row)) {
					layer.msg(MSG.ONE_SELECTED,{icon: 7});
					return;
				}
				layer.confirm(MSG.QUESTION_DELETE, {
					icon:7,
					title:'提示',
					btn: ['确定','不确定'], //按钮
					shade: false //不显示遮罩
				}, function(){
					$.post(table.options.removeUrl,{"id":row.id},function (data) {
						if(data.code == MSG.CODE.SUCCESS){
							layer.alert(MSG.RESULT_SUCCESS,{icon: 6}, function(ind){
								//刷新表格
								$("#" + table.options.id).bootstrapTable('refresh', {
									silent: true
								});
								layer.close(ind);
							});
						} else {
							layer.msg(data.msg,{icon: 5});
						}
					})
				}, function(){
				});
			}
        },
        success_code:function(){
        	return "0";
        },
        error_code:function(){
        	return "500";
        },
        table:{
        	init:function(option){
            	var defaultOption = {
					pagination: true,//分页
					search: false,//显示搜索
					pageSize: 10,
					pageList: [10, 25, 50],
					toolbar:'#toolbar',// 指定工作栏
					sortStable: true,//稳定排序
					striped: false,//显示行间隔色
					escape: false,//转义HTML字符串
					firstLoad: true,// 是否首次请求加载数据，对于数据较大可以配置false
					showFooter: false,// 是否显示表尾
					showSearch: true,// 是否显示检索信息
					showPageGo: false,// 是否显示跳转页
					showRefresh: true,// 是否显示刷新按钮
					showColumns: true,// 是否显示隐藏某列下拉框
					showToggle: true,// 是否显示详细视图和列表视图的切换按钮
					showExport: true,// 是否支持导出文件
					clickToSelect: true,// 是否启用点击选中行
					singleSelect: false,// 是否单选checkbox
					mobileResponsive: true,// 是否支持移动端适配
					rememberSelected: false,// 启用翻页记住前面的选择
					fixedColumns: false,// 是否启用冻结列（左侧）
					fixedNumber: 0,
					rightFixedColumns: false,// 是否启用冻结列（右侧）
					rightFixedNumber: 0,// 列冻结的个数（右侧）
                }
				var options = $.extend(defaultOption, option);
				table.options = options
				$('#'+option.id).bootstrapTable({
					data:			options.data,
					pagination:		options.pagination,
					search:			options.search,
					toolbar:		options.toolbar,
					sortStable:		options.sortStable,
					striped:		options.striped,
					escape:			options.escape,
					firstLoad:		options.firstLoad,
					showFooter:		options.showFooter,
					showSearch:		options.showSearch,
					showPageGo:		options.showPageGo,
					showRefresh:	options.showRefresh,
					showColumns:	options.showColumns,
					showToggle:		options.showToggle,
					showExport:		options.showExport,
					clickToSelect:	options.clickToSelect,
					singleSelect:	options.singleSelect,
					mobileResponsive:options.mobileResponsive,
					rememberSelected:options.rememberSelected,
					fixedColumns:	options.fixedColumns,
					fixedNumber:	options.fixedNumber,
					rightFixedColumns:options.rightFixedColumns,
					rightFixedNumber:options.rightFixedNumber,
					url:			options.url,
					columns:		options.columns,
					pageSize: options.pageSize,
					pageList: options.pageList
				})
			},
			formSearch:function(formId){
        		if($.common.isBlank(formId)){
					formId = "form_search";
				}
				var param = $("#"+formId).serializeObject();
				$("#" + table.options.id).bootstrapTable('refresh', {
					silent: true,
					query:param
				});
			},
			reset:function (formId) {
				if($.common.isBlank(formId)){
					formId = "form_search";
				}
				document.getElementById(formId).reset();
			}
        },
        common:{
        	isBlank:function(obj){
        		if(obj == null || obj == "" || obj == "null"){
        			return true;
        		} else {
        			return false;
        		}
        	},
        	isNotNull:function(obj){
        		if(obj != null && obj != 'null'){
        			return true;
        		} else {
        			return false;
        		}
        	},
        	optionFieldisNull(obj,res){
        		if(obj == null || obj == 'null'){
        			return res;
        		} else {
        			return obj;
        		}
        	},
			dateFormat:function (date,fmt) {
        		if($.common.isBlank(fmt)){
					fmt = "YYYY年mm月dd日 HH时MM分SS秒";
				}
				let ret;
				const opt = {
					"Y+": date.getFullYear().toString(),        // 年
					"m+": (date.getMonth() + 1).toString(),     // 月
					"d+": date.getDate().toString(),            // 日
					"H+": date.getHours().toString(),           // 时
					"M+": date.getMinutes().toString(),         // 分
					"S+": date.getSeconds().toString()          // 秒
					// 有其他格式化字符需求可以继续添加，必须转化成字符串
				};
				for (let k in opt) {
					ret = new RegExp("(" + k + ")").exec(fmt);
					if (ret) {
						fmt = fmt.replace(ret[1], (ret[1].length == 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, "0")))
					};
				};
				return fmt;
			},
			openTab:function(dataUrl, menuName) {
				var panelUrl = window.frameElement.getAttribute('data-id');
				dataIndex = $.common.random(1,100),
					flag = true;
				if (dataUrl == undefined || $.trim(dataUrl).length == 0) return false;
				var topWindow = $(window.parent.document);
				// 选项卡菜单已存在
				$('.menuTab', topWindow).each(function() {
					if ($(this).data('id') == dataUrl) {
						if (!$(this).hasClass('active')) {
							$(this).addClass('active').siblings('.menuTab').removeClass('active');
							$('.page-tabs-content').animate({ marginLeft: ""}, "fast");
							// 显示tab对应的内容区
							$('.mainContent .RuoYi_iframe', topWindow).each(function() {
								if ($(this).data('id') == dataUrl) {
									$(this).show().siblings('.RuoYi_iframe').hide();
									return false;
								}
							});
						}
						flag = false;
						return false;
					}
				});
				// 选项卡菜单不存在
				if (flag) {
					var str = '<a href="javascript:;" class="active menuTab" data-id="' + dataUrl + '" data-panel="' + panelUrl + '">' + menuName + ' <i class="fa fa-times-circle"></i></a>';
					$('.menuTab', topWindow).removeClass('active');

					// 添加选项卡对应的iframe
					var str1 = '<iframe class="J_iframe" name="iframe0' + dataIndex + '" width="100%" height="100%" src="' + dataUrl + '" frameborder="0" data-id="' + dataUrl + '" data-panel="' + panelUrl + '" seamless></iframe>';
					$('.mainContent', topWindow).find('iframe.RuoYi_iframe').hide().parents('.mainContent').append(str1);

					window.parent.$.modal.loading("数据加载中，请稍后...");
					$('.J_mainContent iframe:visible', topWindow).load(function () {
						window.parent.$.modal.close_Loading();
					});

					// 添加选项卡
					$('.J_menuTabs .page-tabs-content', topWindow).append(str);
				}
				return false;
			},
			// 指定随机数返回
			random: function (min, max) {
				return Math.floor((Math.random() * max) + min);
			},
        }
    })
})(jQuery);

var MSG = {
	"ERROR" 							: "错误",
	"ALERT" 							: "提示",
	"INFO" 								: "信息",
	"QUESTION" 							: "询问",
	"RESULT_SUCCESS" 				: "操作成功！",
	"RESULT_ERROR" 				: "操作失败！",
	"QUESTION_DELETE" 					: "确认删除记录？",
	"QUESTION_OPERTAR" 					: "确认操作？",
	"SYSTEM_ERROR" 						: "程序出错，请联系管理员！",
	"SUBMIT" 							: "提交",
	"CANCEL" 							: "取消",
	"NO_SELECTED" 						: "没有记录被选中！",
	"ONE_SELECTED" 						: "请选择一条记录！",
	"LOGIN_USER_INVALID_ERROR" 			: "用户已经失效，请联系管理员续期！",
	"ADD" 								: "添加",
	"EDIT" 								: "修改",
	"ROLE_ADMIN_CANNOT_OPERATE_ERROR"	: "不能操作系统内置管理员角色！",
	"LEAF_HAS_DATA"						: "该节点下有字典数据，不能操作！",
	"DIC_ERROR"							: "初始化获取字典的值出现错误，对系统会有影响，请联系管理员！",
	"DIC_NO_CODE_ERROR"					: "在字典中没有找到对应的code，对系统会有影响，请联系管理员！",
	"QUESTION_RESET_PASS" 				: "确定重置密码为6个1？",
	"QUESTION_LOCK" 					: "确定要锁定该用户？",
	"QUESTION_UNLOCK" 					: "确定要解锁该用户？",
	"IMPORT_CSV_ERROR"					: "导入CSV文件失败，请联系管理员！",
	"IMPORT_CSV_SUCCESS"				: "导入CSV文件成功！",
	"CODE" : {
		SUCCESS : 0,
		ERROR : 500
	}
}
$.fn.serializeObject = function() {
	var o = {};
	var a = this.serializeArray();
	$.each(a, function() {
		if (o[this.name]) {
			if (!o[this.name].push) {
				o[this.name] = [o[this.name]];
			}
			o[this.name].push(this.value || '');
		} else {
			o[this.name] = this.value || '';
		}
	});
	return o;
};